|
RAIS
3.2
|
00001 00028 using System; 00029 using System.Xml.Linq; 00030 using System.Linq; 00031 using System.Data; 00032 using System.Configuration; 00033 using System.Collections; 00034 using System.Collections.Generic; 00035 using System.Web; 00036 using System.Web.Security; 00037 using System.Web.UI; 00038 using System.Web.UI.WebControls; 00039 using System.Web.UI.WebControls.WebParts; 00040 using System.Web.UI.HtmlControls; 00041 00042 using RAIS.Common.UserManagement; 00043 using RAIS.Common.DynamicMaskManagement; 00044 using RAIS.UI.Common; 00045 using Constants=RAIS.Common.Constants; 00046 using DynamicMaskManagement=RAIS.ApplicationLogicLayer.DynamicMaskManagement; 00047 using UserManagement=RAIS.ApplicationLogicLayer.UserManagement; 00048 00049 namespace RAIS.UI.SpecificMasks 00050 { 00054 public partial class CustomSearchTool : System.Web.UI.Page 00055 { 00056 //********************************************************************* 00057 #region Properties 00058 00061 protected UserData CurrentUser 00062 { 00063 get { return (UserData)this.Session[UI.Common.Constants.CURRENT_USER_TAG]; } 00064 } 00065 private XElement TreeViewItems 00066 { 00067 get { return Session["TreeViewItems"] as XElement; } 00068 set { Session["TreeViewItems"] = value; } 00069 } 00070 private Dictionary<int, RAIS.Common.SearchDefinition> SearchDefinitionItems 00071 { 00072 get { return Session["SearchDefinitions"] as Dictionary<int, RAIS.Common.SearchDefinition>; } 00073 set { Session["SearchDefinitions"] = value; } 00074 } 00075 /*private Dictionary<int, FunctionRole.Category> MenuItems 00076 { 00077 get{return Session["MenuItems"] as Dictionary<int, FunctionRole.Category>;} 00078 set{Session["MenuItems"] = value;} 00079 } 00080 private Dictionary<int, Mask> MaskItems 00081 { 00082 get { return Session["MaskItems"] as Dictionary<int, Mask>; } 00083 set { Session["MaskItems"] = value; } 00084 } 00085 private Dictionary<int, DynamicMask> DynamicMaskItems 00086 { 00087 get { return Session["DynamicMaskItems"] as Dictionary<int, DynamicMask>; } 00088 set { Session["DynamicMaskItems"] = value; } 00089 }*/ 00090 #endregion 00091 00092 00093 #region Event handlers 00094 protected void Page_Init(object sender, EventArgs e) 00095 { 00096 RAIS.UI.Common.PageManagement.SetScrolableListBox(this.LBsearch, this, true); 00097 } 00098 protected void Page_PreLoad(object sender, EventArgs e) 00099 { 00100 RAIS.UI.Common.PageManagement.TrimTextBoxValues(this); 00101 } 00108 protected void Page_Load(object sender, EventArgs e) 00109 { 00110 this.Response.Cache.SetNoStore(); 00111 if (this.CurrentUser == null) 00112 UI.Common.AccessManagement.SignOut(this); 00113 00114 if (!this.IsPostBack) 00115 { 00116 this.LBLusernameNoTranslation.Text = this.CurrentUser.Name; 00117 00118 UI.Common.PageManagement.InitializePageTreeForCategory(this, this.TreeView1, RAIS.Common.Constants.CATEGORY_NAME_ADMINISTRATION); 00119 this.LBLadmin.ForeColor = RAIS.UI.Common.Constants.COLOR_OF_MENU_BAR_TEXT_HIGHLIGHT; 00120 this.LBTNmessagebox.Visible = !(this.CurrentUser.FunctionalRole.Type == FunctionRole.FunctionRoleType.Guest); 00121 TreeViewItems = LoadTreeView(); 00122 Bind(); 00123 ChangeViewMode(); 00124 LBsearch.SelectedIndex = 0; 00125 if (LBsearch.Items.Count == 0) 00126 return; 00127 SelectSearchDefinitions(SearchDefinitionItems[int.Parse(LBsearch.SelectedValue)]); 00128 RAIS.UI.Common.PageManagement.SelectTreeNode(TreeView1.Nodes[0].ChildNodes, "_URL_PREFIX~/CustomSearchTool.aspx"); 00129 } 00130 00131 // bug #728 fix 00132 PageManagement.InitHelpMainMenu(LBTNdefault); 00133 } 00140 protected void TreeView1_SelectedNodeChanged(object sender, EventArgs e) 00141 { 00142 UI.Common.UserManagement.ProcessTreeViewOnRedirect(this.TreeView1); 00143 } 00144 00145 protected void DDLresultmenu_SelectedIndexChanged(object sender, EventArgs e) 00146 { 00147 SelectMenu(int.Parse(((DropDownList)sender).SelectedValue)); 00148 } 00149 00150 protected void DDLresultmask_SelectedIndexChanged(object sender, EventArgs e) 00151 { 00152 SelectMask(int.Parse(((DropDownList)sender).SelectedValue)); 00153 } 00154 00155 protected void BTNadd_Click(object sender, EventArgs e) 00156 { 00157 var searchDefinition = new RAIS.Common.SearchDefinition(); 00158 00159 searchDefinition.MaskID = int.Parse( 00160 TreeViewItems.Elements() 00161 .First() 00162 .Elements() 00163 .First().Attribute("ID").Value); 00164 searchDefinition.DynamicMaskID = int.Parse( 00165 TreeViewItems.Elements() 00166 .First() 00167 .Elements() 00168 .First() 00169 .Elements() 00170 .First().Attribute("ID").Value); 00171 00172 SearchDefinitionItems.Add(0, searchDefinition); 00173 LBsearch.Items.Add(new ListItem(searchDefinition.SearchField, searchDefinition.ID.ToString())); 00174 LBsearch.ClearSelection(); 00175 LBsearch.Items.FindByValue("0").Selected = true; 00176 SelectSearchDefinitions(searchDefinition); 00177 ChangeEditMode(); 00178 } 00179 00180 protected void BTNedit_Click(object sender, EventArgs e) 00181 { 00182 ChangeEditMode(); 00183 } 00184 00185 protected void BTNdelete_Click(object sender, EventArgs e) 00186 { 00187 ChangeViewMode(); 00188 ApplicationLogicLayer.SearchManagement.DeleteSearchItem(int.Parse(LBsearch.SelectedValue)); 00189 BindSearchDefinitions(); 00190 LBsearch.SelectedIndex = 0; 00191 SelectSearchDefinitions(SearchDefinitionItems[int.Parse(LBsearch.SelectedValue)]); 00192 RAIS.UI.Common.MessageDisplay.DisplayReturnMessage(this.LBLresult, "The Search Item has been deleted.", true); 00193 } 00194 00195 protected void BTNdiscard_Click(object sender, EventArgs e) 00196 { 00197 if (SearchDefinitionItems.ContainsKey(0)) 00198 { 00199 SearchDefinitionItems.Remove(0); 00200 LBsearch.Items.Remove(LBsearch.Items.FindByValue("0")); 00201 } 00202 ChangeViewMode(); 00203 } 00204 00205 protected void BTNsave_Click(object sender, EventArgs e) 00206 { 00207 string actionMessage = ""; 00208 bool success = Validate(ref actionMessage); 00209 00210 if (success) 00211 { 00212 00213 string text = TXTsearchitem.Text + '(' + TXTsearchfield.Text + ')'; 00214 if (LBsearch.SelectedValue != "0") 00215 { 00216 ApplicationLogicLayer.SearchManagement.DeleteSearchItem(int.Parse(LBsearch.SelectedValue)); 00217 actionMessage = "The new Search Item has been added."; 00218 } 00219 else 00220 actionMessage = "The Search Item has been updated."; 00221 ApplicationLogicLayer.SearchManagement.AddSearchItem( 00222 TXTsearchitem.Text, 00223 TXTsearchfield.Text, 00224 DDLresultmenu.SelectedItem.Text, 00225 DDLresultmask.SelectedItem.Text, 00226 int.Parse(DDLdynamicmaskid.SelectedValue), 00227 TXTsearchsql.Text); 00228 00229 BindSearchDefinitions(); 00230 LBsearch.ClearSelection(); 00231 ListItem listItem = LBsearch.Items.FindByText(text); 00232 listItem.Selected = true; 00233 SelectSearchDefinitions(SearchDefinitionItems[int.Parse(listItem.Value)]); 00234 ChangeViewMode(); 00235 } 00236 00237 RAIS.UI.Common.MessageDisplay.DisplayReturnMessage(this.LBLresult, actionMessage, success); 00238 } 00239 00240 protected void LBsearch_SelectedIndexChanged(object sender, EventArgs e) 00241 { 00242 SelectSearchDefinitions(SearchDefinitionItems[int.Parse(((ListBox)sender).SelectedValue)]); 00243 ChangeViewMode(); 00244 } 00251 protected void LBTNlogout_Click(object sender, EventArgs e) 00252 { 00253 UI.Common.AccessManagement.SignOut(this); 00254 } 00255 #endregion 00256 #region Private helper methods 00257 private List<FunctionRole.Category> GetCategories() 00258 { 00259 List<FunctionRole.Category> ret = new List<FunctionRole.Category>(); 00260 foreach (var value in UserManagement.FunctionalRoleCategories) 00261 { 00262 if (value.Key == Constants.CATEGORY_NAME_INPUT || value.Key == Constants.CATEGORY_NAME_REGULATORY_SYSTEM) 00263 ret.Add(value.Value); 00264 } 00265 return ret; 00266 } 00267 00268 private List<RAIS.Common.SearchDefinition> GetSearchDefinitions() 00269 { 00270 List<RAIS.Common.SearchDefinition> ret = ApplicationLogicLayer.SearchManagement.GetSearchDefinitions(); 00271 SearchDefinitionItems = ret.ToDictionary(x => x.ID, y => y); 00272 return ret; 00273 } 00274 00275 private List<Mask> GetMasks(FunctionRole.Category category) 00276 { 00277 List<Mask> ret = new List<Mask>(); 00278 00279 foreach (var value in UserManagement.GetFunctionalRoleSubcategories(category)) 00280 foreach (var mask in UserManagement.GetMasks(category, value.Value)) 00281 { 00282 if (mask.Value.Name != "All Menu items") 00283 ret.Add(mask.Value); 00284 } 00285 ret.Sort((x, y) => x.Name.CompareTo(y.Name)); 00286 return ret; 00287 } 00288 00289 private List<DynamicMask> GetDynamicMasks(Mask mask) 00290 { 00291 List<DynamicMask> ret = new List<DynamicMask>(); 00292 foreach (var value in DynamicMaskManagement.GetDynamicMasksByMask(mask)) 00293 ret.Add(value.Value); 00294 return ret; 00295 } 00296 00297 private void SelectMenu(int selected) 00298 { 00299 DDLresultmask.DataSource = TreeViewItems.Elements("Menu") 00300 .Where(x => x.Attribute("ID").Value == selected.ToString()) 00301 .First() 00302 .Elements() 00303 .ToDictionary(x => x.Attribute("ID").Value, y => y.Attribute("Name").Value); 00304 DDLresultmask.DataTextField = "value"; 00305 DDLresultmask.DataValueField = "key"; 00306 DDLresultmask.DataBind(); 00307 SelectMask(int.Parse(DDLresultmask.SelectedValue)); 00308 } 00309 00310 private void SelectMask(int selected) 00311 { 00312 DDLdynamicmaskid.DataSource = TreeViewItems.Elements() 00313 .Elements("Mask") 00314 .Where(x => x.Attribute("ID").Value == selected.ToString()) 00315 .First() 00316 .Elements() 00317 .ToDictionary(x => x.Attribute("ID").Value, y => y.Attribute("Name").Value); 00318 DDLdynamicmaskid.DataTextField = "value"; 00319 DDLdynamicmaskid.DataValueField = "key"; 00320 DDLdynamicmaskid.DataBind(); 00321 } 00322 00323 private void SelectSearchDefinitions(RAIS.Common.SearchDefinition searchDefinition) 00324 { 00325 TXTsearchfield.Text = searchDefinition.SearchField; 00326 TXTsearchitem.Text = searchDefinition.SearchItem; 00327 TXTsearchsql.Text = searchDefinition.SearchSQL; 00328 00329 int menuID; 00330 if (searchDefinition.ID == 0) 00331 menuID = int.Parse(TreeViewItems.Elements().First().Attribute("ID").Value); 00332 else 00333 menuID = int.Parse(TreeViewItems.Elements().Elements("Mask").Where(x => x.Attribute("ID").Value == searchDefinition.MaskID.ToString()) 00334 .First() 00335 .Parent.Attribute("ID").Value); 00336 00337 SelectMenu(menuID); 00338 DDLresultmenu.ClearSelection(); 00339 DDLresultmenu.Items.FindByValue(menuID.ToString()).Selected = true; 00340 00341 DDLresultmask.ClearSelection(); 00342 DDLresultmask.Items.FindByValue(searchDefinition.MaskID.ToString()).Selected = true; 00343 SelectMask(searchDefinition.MaskID); 00344 DDLdynamicmaskid.ClearSelection(); 00345 DDLdynamicmaskid.Items.FindByValue(searchDefinition.DynamicMaskID.ToString()).Selected = true; 00346 } 00347 00348 private void Bind() 00349 { 00350 DDLresultmenu.DataSource = TreeViewItems.Elements("Menu") 00351 .ToDictionary(x => x.Attribute("ID").Value, y => y.Attribute("Name").Value); 00352 DDLresultmenu.DataTextField = "value"; 00353 DDLresultmenu.DataValueField = "key"; 00354 DDLresultmenu.DataBind(); 00355 SelectMenu(int.Parse(DDLresultmenu.SelectedValue)); 00356 00357 BindSearchDefinitions(); 00358 } 00359 00360 private void BindSearchDefinitions() 00361 { 00362 LBsearch.DataSource = GetSearchDefinitions().ToDictionary(x => x.ID, y => y.SearchItem + '(' + y.SearchField + ')'); 00363 LBsearch.DataTextField = "value"; 00364 LBsearch.DataValueField = "key"; 00365 LBsearch.DataBind(); 00366 } 00367 private void ChangeEditMode() 00368 { 00369 DDLdynamicmaskid.Enabled = true; 00370 DDLresultmask.Enabled = true; 00371 DDLresultmenu.Enabled = true; 00372 TXTsearchfield.Enabled = true; 00373 TXTsearchitem.Enabled = true; 00374 TXTsearchsql.Enabled = true; 00375 BTNadd.Enabled = false; 00376 BTNdelete.Enabled = false; 00377 BTNedit.Enabled = false; 00378 BTNdiscard.Enabled = true; 00379 LBsearch.Enabled = false; 00380 BTNsave.Enabled = true; 00381 } 00382 00383 private void ChangeViewMode() 00384 { 00385 DDLdynamicmaskid.Enabled = false; 00386 DDLresultmask.Enabled = false; 00387 DDLresultmenu.Enabled = false; 00388 TXTsearchfield.Enabled = false; 00389 TXTsearchitem.Enabled = false; 00390 TXTsearchsql.Enabled = false; 00391 BTNadd.Enabled = true; 00392 BTNdelete.Enabled = true; 00393 BTNedit.Enabled = true; 00394 LBsearch.Enabled = true; 00395 BTNdiscard.Enabled = false; 00396 BTNsave.Enabled = false; 00397 } 00398 00399 private XElement LoadTreeView() 00400 { 00401 XElement elem = new XElement("TreeView"); 00402 elem.Add(GetCategories().Select(menu => 00403 new XElement("Menu", 00404 new XAttribute("ID", menu.ID), 00405 new XAttribute("Name", menu.Name), 00406 GetMasks(menu).Select(mask => 00407 new XElement("Mask", 00408 new XAttribute("ID", mask.ID), 00409 new XAttribute("Name", mask.Name), 00410 GetDynamicMasks(mask).Select(dynamicMask => 00411 new XElement("DynamicMask", 00412 new XAttribute("ID", dynamicMask.ID), 00413 new XAttribute("Name", dynamicMask.Name)))))))); 00414 return elem; 00415 } 00416 00417 private bool Validate(ref string returnMessage) 00418 { 00419 if (TXTsearchfield.Text.Trim() == "") 00420 { 00421 returnMessage = "Search Field is not specified (may not be left blank)"; 00422 return false; 00423 } 00424 if (TXTsearchitem.Text.Trim() == "") 00425 { 00426 returnMessage = "Search Item is not specified (may not be left blank)"; 00427 return false; 00428 } 00429 if (TXTsearchsql.Text.Trim() == "") 00430 { 00431 returnMessage = "Search SQL is not specified (may not be left blank)"; 00432 return false; 00433 } 00434 return true; 00435 } 00436 #endregion 00437 } 00438 }